#include<iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        if (bills.size() == 0) {
            return true;
        }
        
        map<int, int> M;
        for (int i = 0; i < bills.size(); i++) {
            if (bills[i] == 5) {
                ++M[bills[i]];
            }
            else if (bills[i] == 10) {
                if (M[5] > 0) {
                    --M[5];
                    ++M[10];
                }
                else {
                    return false;
                }
            }
            else {
                if (M[10] > 0 && M[5] > 0) {

                    --M[10];
                    --M[5];
                    ++M[20];
                }
                else if (M[5] >= 3) {
                    M[5] = M[5] - 3;
                }
                else {
                    return false;
                }
            }
        }
        return true;
    }
};

